质因数的个数
描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5，共有5个质因数。
输入描述：
可能有多组测试数据，每组测试数据的输入是一个正整数N，(1<N<10^9)。
输出描述：
对于每组数据，输出N的质因数的个数。
示例1
输入：
120

输出：
5

#include<bits/stdc++.h>
using namespace std;

const int MAXN=1e5;//sqrt(1e9)这种形式编译不通过

vector<int> prime;
bool isPrime[MAXN];

void Initial(){//筛法求质数
    for(int i=0;i<MAXN;i++){
        isPrime[i]=true;
    }
    isPrime[0]=false;
    isPrime[1]=false;
    for(int i=2;i<MAXN;i++){
        if(!isPrime[i]){
            continue;
        }
        prime.push_back(i);
        for(int j=i*i;j<MAXN;j+=i){
            isPrime[j]=false;
        }
    }
    return;
}

int NumberOfPrimeFactor(int number){
    int answer=0;
    for(int i=0;i<prime.size();++i){
        int factor=prime[i];
        if(number<factor){//被除数小于质数
            break;
        }
        int current=0;//记录相同质数的数量
        while(number%factor==0){
            current++;
            number/=factor;
        }
        answer+=current;
    }
    if(number>1){//最后剩余的质数
        answer++;
    }
    return answer;
}

int main(){
    Initial();
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%d\n",NumberOfPrimeFactor(n));
    }
    return 0;
}
